梦想不会自己发光,真正闪耀的是那个为梦狂奔的你。献给知行的孩子们!(Eric.He著)
本教程将从 C++ 赋值语句的核心概念、多种赋值形式(基础形式、嵌套形式、连续形式)到使用注意事项,全面拆解赋值语句的核心用法,帮助你掌握这一C++编程中最基础且高频的操作。
C++ 中的赋值语句是通过 =(赋值运算符)将右侧表达式的计算结果赋给左侧变量的语句,是程序中修改变量值、传递数据的最基础方式。
赋值语句的本质是「将右侧的值写入左侧变量对应的内存空间」,它是一种操作语句(而非数学中的“等于”),执行后变量的原有值会被覆盖。
基础示例:
#include <iostream>
using namespace std;
int main() {
int a; // 定义整型变量a
a = 10; // 赋值语句:将常量10赋给变量a
int b = a + 5; // 赋值语句:将表达式a+5的结果(15)赋给变量b
cout << "a = " << a << endl; // 输出:a = 10
cout << "b = " << b << endl; // 输出:b = 15
return 0;
}
变量 = 表达式 的返回值是「赋值后左侧变量的值」,这是嵌套/连续赋值的核心基础;注意: 区分赋值运算符 = 和相等判断运算符 ==:
a = 5:赋值语句,将5赋给变量a;a == 5:关系表达式,判断a的值是否等于5,返回bool值(true/false)。这是最常用的赋值形式,右侧可以是常量、变量、算术表达式、函数返回值等任意合法表达式,核心是将右侧结果赋给左侧变量。
变量名 = 表达式;
#include <iostream>
#include <string>
using namespace std;
// 自定义函数(返回int类型)
int getNum() {
return 20;
}
int main() {
// 场景1:常量赋值
int num1 = 100;
double pi = 3.1415926;
string str = "Hello C++";
// 场景2:变量赋值
int num2 = num1; // 将num1的值(100)赋给num2
// 场景3:算术表达式赋值
int num3 = num1 + num2 * 2; // 100 + 200 = 300
// 场景4:函数返回值赋值
int num4 = getNum(); // 将函数返回值20赋给num4
// 场景5:关系表达式赋值(结果为bool值,隐式转为int:true=1,false=0)
int num5 = (num1 > 50); // 100>50为true,num5=1
// 输出结果
cout << "num1 = " << num1 << endl; // 100
cout << "num2 = " << num2 << endl; // 100
cout << "num3 = " << num3 << endl; // 300
cout << "num4 = " << num4 << endl; // 20
cout << "num5 = " << num5 << endl; // 1
return 0;
}
嵌套赋值的核心是利用「赋值语句有返回值」的特性,将一个赋值表达式作为另一个赋值语句的右侧表达式。括号可省略(因赋值运算符右结合),但加括号可提升可读性。
执行逻辑:先执行括号内的赋值语句,将结果赋给内层变量,再将内层赋值语句的返回值(即内层变量的新值)赋给外层变量。
变量1 = (变量2 = 表达式);
#include <iostream>
using namespace std;
int main() {
int a, b;
// 嵌套赋值:先执行b = 20,再将b的新值(20)赋给a
a = (b = 20);
cout << "b = " << b << endl; // 输出:b = 20
cout << "a = " << a << endl; // 输出:a = 20
// 更复杂的嵌套:结合算术表达式
int c, d;
c = (d = 10 + 5) * 2; // 先d=15,再c=15*2=30
cout << "d = " << d << endl; // 输出:d = 15
cout << "c = " << c << endl; // 输出:c = 30
// 省略括号(赋值运算符右结合,效果等价)
int e, f;
e = f = 30; // 等价于 e = (f = 30)
cout << "f = " << f << endl; // 输出:f = 30
cout << "e = " << e << endl; // 输出:e = 30
return 0;
}
连续赋值是嵌套赋值的简化形式,本质是多层嵌套赋值的语法糖,赋值运算符遵循「右结合性」,即从右向左依次执行赋值。
适用场景:需将同一个值赋给多个变量时,简化代码书写。
变量1 = 变量2 = 变量3 = ... = 表达式;
#include <iostream>
using namespace std;
int main() {
// 基础连续赋值:将0赋给a、b、c三个变量
int a, b, c;
a = b = c = 0;
// 执行顺序:c=0 → b=c(0) → a=b(0)
cout << "a = " << a << endl; // 0
cout << "b = " << b << endl; // 0
cout << "c = " << c << endl; // 0
// 连续赋值结合表达式
int x, y, z;
x = y = z = 5 * 4; // 先z=20 → y=20 → x=20
cout << "x = " << x << endl; // 20
cout << "y = " << y << endl; // 20
cout << "z = " << z << endl; // 20
// 连续赋值与嵌套结合
int m, n, p;
m = (n = 10) = p = 20;
// 执行顺序:p=20 → n=10的返回值是10 → 将10赋给m(注意:(n=10)=20 是给n重新赋值为20)
cout << "p = " << p << endl; // 20
cout << "n = " << n << endl; // 20(被重新赋值)
cout << "m = " << m << endl; // 20
return 0;
}
if (a = 5) 会导致赋值并判断值是否非0(恒为true),而非判断a是否等于5;5 = a、a + b = 10 均会编译报错;int a = (int)3.99);a = b = c = 10 等价于 a = (b = (c = 10));cout << (a = 10) 会输出10,但过度使用会降低代码可读性。= 将右侧表达式结果赋给左侧变量,本质是修改变量的内存值,与数学中的“等于”完全不同;本教程从 C++ 赋值语句的概念、多种形式到注意事项,全面拆解了赋值语句的核心用法。掌握赋值语句的正确使用,是编写高效、正确C++代码的第一步。